﻿/* ***** BEGIN LICENSE BLOCK *****
 *
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * (the "License"); you may not use this file except in compliance with the
 * License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
 * the specific language governing rights and limitations under the License.
 * 
 * The Original Code is CnCNet Client code, Released 2nd January 2009.
 * 
 * The Initial Developers of the Original Code are
 * Adam Krock and John Sanderson. Portions created by
 * the Initial Developer are Copyright (C) 2010
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s): Adam Krock, John Sanderson.
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either of the GNU General Public License Version 2 or later (the "GPL"),
 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 * 
 * ***** END LICENSE BLOCK *****/

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Net;

namespace CnCNet
{
    public partial class cncNetUsers : Form
    {
        private ToolTip a = new ToolTip();

        public cncNetUsers()
        {
            InitializeComponent();
        }

        private void cncNetUsers_Load(object sender, EventArgs e)
        {
            refreshPlayers();
        }

        private void refreshPlayers()
        {
            lbxActive.Items.Clear();
            lbxInactive.Items.Clear();
            lbxGames.Items.Clear();

            ArrayList PreferredPlayers, OtherPlayers;
            cncNetCountryLookup x;

            PreferredPlayers = new ArrayList();
            OtherPlayers = new ArrayList();
            x = cncNetForm.myCountryLookup;

            foreach (cncNetClient a in cncNetForm.myClientList.ToArray())
            {
                if (a.isActive)
                    lbxActive.Items.Add(a.myName + " [" + x.lookupCountryName(a.myIPAddress) + "] " + a.myPing.ToString() + " ms");
                else
                    lbxInactive.Items.Add(a.myName + " [" + x.lookupCountryName(a.myIPAddress) + "]");
            }

            foreach (cncNetServer a in cncNetForm.myServerList.ToArray())
            {
                lbxGames.Items.Add(a.myName);
            }
        }

        private void btnRefresh_Click(object sender, EventArgs e)
        {
            refreshPlayers();
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void linkLabelActive_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            toolTip1.SetToolTip(linkLabelActive, toolTip1.GetToolTip(linkLabelActive));
        }

        private void linkLabelInactive_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            toolTip1.SetToolTip(linkLabelInactive, toolTip1.GetToolTip(linkLabelInactive));
        }

        protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
        {
            try
            {
                if (msg.WParam.ToInt32() == (int)Keys.Escape)
                {
                    this.Hide();
                }
                else
                {
                    return base.ProcessCmdKey(ref msg, keyData);
                }
            }
            catch (Exception Ex)
            {
                MessageBox.Show("Key Overrided Events Error: " + Ex.Message);
            }
            return base.ProcessCmdKey(ref msg, keyData);
        }

        private void timerRefresh_Tick(object sender, EventArgs e)
        {
            refreshPlayers();
        }
    }
}
